//#include "johnsonli.h"
//
//johnsonli::Logger::ptr g_logger = LOG_ROOT();
//
//int count = 0;
//
//johnsonli::RWMutex mutex;
//johnsonli::Mutex mutex2;
//
//void fun1()
//{
//	LOG_INFO(g_logger) << "name: " << johnsonli::Thread::GetName()
//		<< " this.name: " << johnsonli::Thread::GetThis()->getName()
//		<< " id: " << johnsonli::getThreadId()
//		<< " this.id: " << johnsonli::Thread::GetThis()->getId();
//	
//	for (int i = 0; i < 1000000; ++i)
//	{
//		johnsonli::Mutex::Lock lock(mutex2);
//		++count;
//	}
//	
//	
//}
//
//void fun2()
//{
//	while (true)
//	{
//		LOG_INFO(g_logger) << "=====================";
//	}
//	
//}
//
//void fun3()
//{
//	while (true)
//	{
//		LOG_INFO(g_logger) << "#####################";
//	}
//}
//
//int main222()
//{
//	//std::cout << "main bebin" << std::endl;
//	YAML::Node root = YAML::LoadFile("/home/ubuntu/project/c++/ServerFramework/log2.yaml");
//	johnsonli::Config::LoadFromYaml(root);
//
//	LOG_INFO(g_logger) << "thread test begin";
//
//	//johnsonli::Thread::ptr t1(new johnsonli::Thread(&fun1, "t1"));
//	//johnsonli::Thread::ptr t2(new johnsonli::Thread(&fun1, "t2"));
//	//johnsonli::Thread::ptr t3(new johnsonli::Thread(&fun1, "t3"));
//	//t1->join();
//	//t2->join();
//	//t3->join();
//
//	std::vector<johnsonli::Thread::ptr> thrs;
//	for (int i = 0; i < 2; ++i)
//	{
//		johnsonli::Thread::ptr thr(new johnsonli::Thread(&fun1, "name_" + std::to_string(i * 2)));
//		//johnsonli::Thread::ptr thr2(new johnsonli::Thread(&fun3, "name_" + std::to_string(i * 2 + 1)));
//		thrs.push_back(thr);
//		//thrs.push_back(thr2);
//	}
//
//	for (size_t i = 0; i < thrs.size(); ++i) {
//		thrs[i]->join();
//	}
//
//	LOG_INFO(g_logger) << "thread test end";
//	LOG_INFO(g_logger) << "count: " << count;
//	
//	getchar();
//	return 0;
//}